Blendshape Creation
Note: This page is a WIP! Instructions here are subject to change. Use at your own risk.
Disclaimer: Blender knowledge is required to create blendshapes for your model from scratch. If you do not know Blender, this guide will not help you.
Recommended Blender Addons
- Shape Key Manager Pro
- This addon can duplicate, rename, and mirror blendshapes you create. It saves you having to do most of the tedious work!
- Shape Keys Plus
- This addon is a better blendshape manager that lets you easily reorder, mirror, and sort your blendshapes.
- VRCFT-OSC-Receiver
- You can test blendshapes you make in Blender directly, without having to export your model to Unity. This is useful for testing purposes.
Project Setup
In your project, make sure you have the following:
- A model of choice to add FT to
- Any addons you may want/need
- Patience (optional)
Method 1 - Proportional Editing
1. Model Cleanup
1. Model Cleanup
- Make sure your model is symmetrical. In Edit Mode, enable X-Mirror in the upper-right of your viewport.
- Use
G
(the shortcut for the Grab/Move tool) to move the mesh. The mesh should move symmetrically and not have any stray vertices splitting from either side. If you notice stray vertices moving independently, you can use the Snap to Symmetry tool to symmetrize each side. - Ensure all blendshapes are disabled when checking for symmetry to avoid misleading deformations.
If your model cannot be symmetrized, use Method 2.
2. Blendshape Creation
2. Blendshape Creation
Refer to the Unified Expressions References for detailed guidelines on the facial expressions you need to create. Start creating each shape, forgoing any changes to the eyeball rotation. Eye rotation is managed by the VRC Face Tracking (VRCFT) rotation driver, so you don't need to adjust eyeball rotation unless your model lacks eye bones.
-
Blendshape Workflow
- Click the + button next to the blendshape list to add a new blendshape.
- Press
O
on your keyboard to turn on proportional editing, or click the Proportional Editing icon at the top of the viewport.
- Tip: Enable Connected Only in the proportional editing options to affect only connected vertices.
- Select the vertices you want to modify. You can use tools like Box Select (
B
) or Circle Select (C
) for efficiency. - Press
G
to move (grab) the vertices,R
to rotate them, orS
to scale them as needed. - Use your mouse scroll wheel to adjust the influence radius of proportional editing. Scrolling up decreases the area, while scrolling down increases it.
Additional Tips
-
Preventing Unwanted Influence
- To prevent certain faces or vertices from being influenced, you can hide them:
- Press
H
to hide selected faces or vertices. - Press
Alt + H
to unhide them.
- Press
- To prevent certain faces or vertices from being influenced, you can hide them:
-
Axis Constraints
- To move or rotate along a specific axis, use these shortcuts:
- After initiating a move, rotate, or scale action, press
X
,Y
, orZ
to lock the transformation to the corresponding axis. - Hold
Shift + X
,Shift + Y
, orShift + Z
to exclude an axis, restricting the transformation to the other two axes.
- After initiating a move, rotate, or scale action, press
- To move or rotate along a specific axis, use these shortcuts:
3. Creating Combined Shapes
3. Creating Combined Shapes
Some facial expressions require combined shapes to function correctly. For example, you may need a BrowInnerUp blendshape that affects both eyebrows symmetrically by combining BrowInnerUpRight and BrowInnerUpLeft.
Since you've already created all the uncombined (left and right) shapes, we can use these to make combined variants using New Shape From Mix:
-
Set Blendshape Values in Object Mode
- Switch to Object Mode.
- In the Shape Keys panel, set the values of both BrowInnerUpRight and BrowInnerUpLeft to 1.0, activating both needed shapes.
-
Create a New Shape from the Mix
- Click on the Shape Keys dropdown menu (the down arrow icon) in the Shape Keys panel.
- Select "New Shape From Mix". This action creates a new blendshape that combines the current state of all active blendshapes.
-
Rename the New Blendshape
- The new blendshape will appear in the list, usually named something like Key N.
- Rename this new blendshape to BrowInnerUp (or the appropriate combined shape name).
-
Reset Original Blendshape Values
- Set the values of BrowInnerUpRight and BrowInnerUpLeft back to 0.0 to avoid unintended deformations when manipulating other blendshapes.
-
Test the Combined Blendshape
- Move the slider of the new BrowInnerUp blendshape from 0.0 to 1.0.
- Verify that both eyebrows move up symmetrically as intended.
- You can use this same method to create other combined blendshapes, such as EyeClosed, MouthSmile, etc.
Method 2 - Sculpt Mode
To be addressed.
Testing Your Blendshapes
After creating your blendshapes, it's always important to test them to make sure they work as you expect. You can test with an upload to VRChat, but there are a couple of other alternatives if you prefer to test locally. \o/
Option 1: Testing in Blender using VRCFT-OSC-Receiver
This method allows you to test your blendshapes directly in Blender without exporting your model to Unity.
-
Ensure VRCFT-OSC-Receiver Addon is Installed
- Install the VRCFT-OSC-Receiver addon in Blender if you haven't already.
-
Open VRC Face Tracking (VRCFT)
- Make sure VRCFT software is running and properly tracking your facial expressions. I usually use LiveLink for iOS, but you can use MeowFace for Android!
-
Enable the Receiver in Blender
- In Blender, select your model's body mesh.
- Navigate to the VRCFT Receiver panel in the Properties window.
- Click Start Receiver to begin receiving OSC data from VRCFT.
You should be able to oogle at the camera and check to see if there's any changes you need to make. If some combined and split blendshapes for the same action trigger (eg. LipFunnelUpper and Lipfunnel are activating, creating something way too exaggerated), you can hide the specific shapes with the eyeball icon. In Unity, they will act properly!
Option 2: Testing in Unity with Gesture Manager and Av3Emulator
This method involves exporting your model to Unity and testing the blendshapes within the Unity environment.
-
Export Your Model from Blender
- Export your model as an FBX file with shape keys (blendshapes) included.
- Create a backup of your FBX file in Unity before making changes.
- Export your model as an FBX file with shape keys (blendshapes) included.
-
Import Your Model into Unity
- Open your Unity project for VRChat avatar development.
- Import your FBX into the folder where it's normally stored.
-
Install Gesture Manager and Av3Emulator
- Import both Gesture Manager and Av3Emulator and into your Unity project.
-
Open VRC Face Tracking (VRCFT)
- Ensure VRCFT software is running and properly tracking your facial expressions.
-
Test Through the Expressions Wheel
- Enable both Eye and Face Tracking through the wheel as if you were in game, and oogle at the screen! If there's anything you noticed that doesn't quite add up, you can make changes in Blender and re-export.